package cs348a.opengl.object;

import javax.media.opengl.GLAutoDrawable;

/**
 * <code>OpenGLObject</code> is an interface for objects 
 * rendered in <code>OpenGLPanel</code>s.
 * 
 * @author H.S Kim
 */
public interface OpenGLObject {	
	/**
	 * Returns the position.
	 * 
	 * @return
	 */
	float[] getPosition();
	
	/**
	 * Sets the position.
	 * 
	 * @param postion
	 */
	void setPosition(float[] position);

	/**
	 * Returns the rotation.
	 * 
	 * @return
	 */
	float[] getRotation();
	
	/**
	 * Sets the rotation.
	 * 
	 * @param rotation
	 */
	void setRotation(float[] rotation);
	
	/**
	 * Returns the rotation point.
	 * 
	 * @return
	 */
	float[] getRotationPoint();
	
	/**
	 * Sets the rotation point.
	 * 
	 * @param rotation
	 */
	void setRotationPoint(float[] rotation);
	
	/**
	 * Draws the component on the GL.
	 * 
	 * @param drawable
	 */
	void displayComponent(GLAutoDrawable drawable);
	
	/**
	 * Show/hides the objects
	 * 
	 * @param visible
	 */
	void setVisible(boolean visible);
	
	/**
	 * Is the object visible
	 * 
	 * @return
	 */
	boolean isVisible();
}
